Instalando e configurando o Tactium MIS
Sumário
Visão Geral
O Tactium MIS é um banco de dados de informações operacionais e administrativas organizadas de forma a produzir relatórios regulares sobre as operações para todos os níveis de gestão de uma organização.
O processo a seguir detalha as etapas necessárias para utilização de dois databases distintos, o database operacional e um segundo database histórico (Tactium_MIS) onde serão geradas cópias das informações operacionais que serão fornecidas aos clientes através da utilização da API.
A base de dados atualmente armazena os valores dos relatórios Detalhe de Ligações e Detalhe de Atividades da solução Tactium IP e Detalhe de Atendimentos de Mensagem e Produtividade Campanhas Omni da solução Tactium CRM/OMNI.

Criando a estrutura da base Tactium MIS
O processo de implementação da estrutura do MIS é iniciado através da criação da base de dados que será utilizada neste processo.
Base de Dados
Realize o download e execute em seguida o script abaixo para criação da base:
O script abaixo criará uma base de nome “Tactium_MIS”, mas o nome da base pode conter outra definição caso desejado. Basta inserir o nome escolhido na linha: “IF (NOT EXISTS (SELECT name FROM SYS.databases WHERE name = ‘NOMEDABASE’))“.
Tenha acesso ao script através do link abaixo:
Em seguida execute o script adicional na base recém criada do Tactium_MIS, script contempla a criação de mais duas tabelas para acesso aos novos relatórios do Tactium CRM/OMNI, através do link abaixo:
O script abaixo criará uma conexão com a base de dados do Tactium CRM na tabela T_STP. Basta inserir o nome da base de dados nas linhas:
“EXEC [NOMEDABASE_CRM]..[SP_CONSULTA_OMNI_CAMPANHA]“
“EXEC [NOMEDABASE_CRM]..[SP_CONSULTA_AtendimentoWhatsapp]“
Procedures
Após a criação da estrutura da base de dados, criaremos também as procedures SP_ExecProcedures, SP_ComparaProcedures e SP_ExecuteBI:
Tenha acesso aos scripts correspondentes através dos links abaixo:
Execute os scripts abaixo na base Tactium_MIS.
Procedures no Database Tactium CRM
Execute os scripts abaixo na base Tactium_CRM caso a versão do CRM/OMNI seja inferior a 5.53.7.2.
Atualizaremos também as procedures SP_CONSULTA_AtendimentoWhatsapp, SP_CONSULTA_OMNI_CAMPANHA.
Tenha acesso aos scripts correspondentes através dos links abaixo:
Jobs
A Base de MIS conterá sempre os dados de d-1, logo serão apresentados dados do dia anterior à entrada da solicitação. Dito isto, para a população desses dados é necessário criar processos (jobs) que farão a consulta dos dados no TactiumIP e Tactium CRM/OMNI e irão inseri-los na base Tactium_MIS.
Para configurar os Jobs onde serão realizados este processo, realize as etapas abaixo:
1. Execute estes comandos (inserts) na base Tactium_MIS:
Nesse script será necessário definir o nome do banco de dados do Tactium IP. Está configurado como “TactiumIP” que é o nome padrão do banco de dados do Tactium IP.
Em ambientes que já foram implantados, o script adicional abaixo deverá ser executado, pois em novas versões da aplicação foi incluído um novo campo na procedure “SP_CON_DETATVAGENTE”.
[ALTER_TACTIUM_MIS]
2. Dando continuidade, iremos criar o Job onde será executado a procedure SP_ExecuteBI, todos os dias, para que a mesma faça a população dos dados para a base Tactium_MIS:
No menu lateral Object Explorer, clique na opção SQL Server Agent.
Na opção SQL Server Agent crie um novo Trabalho, no caminho Trabalho (Job) >> Novo Trabalho (New Job).

3. Cadastre um Novo passo (Step), de acordo com a tabela abaixo:

|
Nome da Etapa |
Step 1 |
|
Tipo |
Script Transact-SQL (T-SQL) |
|
Banco de Dados |
Tactium_MIS |
|
Comando |
Declare @DTINICIO Char(19) = Convert(Char(10), getdate()-1, 103) + ‘ 00:00:00’, @DTFIM Char(19) = Convert(Char(10), getdate()-1, 103) + ‘ 23:59:59’Exec SP_ExecuteBI @DTINICIO, @DTFIM |
O comando do Job executará a carga dos dados de 1 em 1 dia (Dia corrente – 1), de acordo com regra criada acima. Porém, caso necessite gerar uma carga de uma única vez com vários dias, podemos sugerir o comando abaixo para ser executado diretamente no SQL (durante a implantação) passando a quantidade de dias necessários na variável “@dias”.
[Comando_SQL_Carregar_VáriosDias_MIS]
4. Cadastre uma Nova Agenda (Schedules), de acordo com a tabela abaixo:

| Nome | Principal |
| Tipo de agenda | Recorrente |
| Caixa de seleção “Habilitado” | |
| Ocorre | Diariamente |
| Repete-se a cada | 1 |
| Ocorre uma vez em | 00:00:20 |
| Data de início | Data de início do cenário de produção da Base Tactium_MIS |
| Caixa de seleção “Sem data de término” | |
| Descrição | Ocorre diariamente às 23:00:00. A Agenda será usada a partir de 24/05/2023. |
Instalando o serviço ReportAPI
A API utilizada para consulta dos dados históricos da base Tactium_MIS é a ReportAPI. Ela fornece informações de relatórios de BI do TactiumIP. Ela funciona como um serviço RESTful, e utiliza autenticação JWT Bearer para funcionar.
O processo de implementação da estrutura para utilização da ReportAPI é inicialmente configurar o ambiente onde esta será implantada, siga o processo abaixo:
- Instalando/ Habilitando o IIS (Internet Information Services) com as seguintes configurações marcadas:

- .NET Core Bundle
Em seguida, baixe e instale o pacote do .NET Core Bundle.
O download do pacote do .NET Core Bundle pode ser realizado a partir da seguinte URL: https://dotnet.microsoft.com/en-us/download/dotnet/thank-you/runtime-aspnetcore-6.0.15-windows-hosting-bundle-installer
- Configurando o Pool de Aplicativos e o Site do ReportAPI
Neste momento, realizaremos a cópia dos arquivos do pacote de instalação para um diretório no servidor e configure um pool no IIS para essa aplicação.
1. Adicione uma nova aplicação ao pool de aplicativos, com as seguintes configurações:
|
Name: |
ReportAPI |
|
.Net CLR Version: |
.Net CLR Version v4.0.30319 |
|
Managed Pipeline Mode: |
Integrado |

Em seguida, recuperaremos os pacotes da ReportAPI (mesma versão operacional da solução Tactium IP) e colocaremos dentro do wwwroot para convertê-la posteriormente em aplicação.
Report API disponível a partir da versão 55.180.3 da solução Tactium IP.
Converta o diretório em uma aplicação usando o pool criado.

É altamente recomendado que o acesso a esta API seja feito por meio do protocolo HTTPS, uma vez que informações sensíveis como login e tokens serão transmitidas por essa conexão.
Configurando o acesso da API ao Banco de Dados do Tactium IP
Antes de iniciar os apontamentos necessários do no arquivo de configuração da API, criaremos a Tabela (na base do Tactium IP) que armazenará os dados dos usuários que terão acesso a receber os dados de consulta através da ReportAPI .
Tenha acesso ao script correspondente através do link abaixo:
Agora iremos inserir os usuários. Disponibilizamos o script abaixo com a inserção de um usuário com as credenciais:
- Login: admin e Password: Tactium@mis.
Recomendamos que seja realizada a alteração nos dados de inserção para atualizar os valores de Login e Password.
Tenha acesso ao script correspondente através do link abaixo:
Após a conclusão do processo acima, podemos iniciar a configuração da API no arquivo “appsettings.json”, localizado na raiz do diretório.
- No arquivo, você precisará definir as seguintes propriedades relacionadas ao banco de dados do MIS:
{ "DatabaseApi": { "Host": "192.168.0.1", "DBName": "Tactium_MIS", "User": "usuario", "Passcode": "senha" } }
| Campo | Descrição |
| DatabaseApi | Bloco principal contendo as configurações de acesso ao banco de dados. |
| Host | Endereço do servidor onde o banco de dados está hospedado. |
| DBName | Nome da base de dados utilizada pela aplicação. |
| User | Usuário autorizado a acessar o banco de dados. |
| Passcode | Senha correspondente ao usuário configurado. |
- Além disso, como visto anteriormente, a API precisa ter acesso ao banco de dados do Tactium IP que terá acesso aos registros de usuários que podem ser autenticados. As propriedades relacionadas a essa configuração são:
Caso o acesso ao banco de dados de usuários contenha autenticação criptografada, será necessário criar uma tabela para receber os usuários da API.
{ "JWTBearerAuth": { "ContextFactory": "MsSqlDBFactory", "TokenExpiringMinutes": 120, "Host": "192.168.0.1", "DbName": "TactiumIP", "User": "callback", "Passcode": "softium", "Table": "T_USER", "ColumnUser": "Name", "ColumnPass": "Password" } }
| Campo | Descrição |
| ContextFactory | Fornecedor do banco de dados. |
| TokenExpiringMinutes | Tempo, em minutos, para a expiração do token. |
| Host | Servidor de banco de dados para conexão (IP, hostname ou instância). |
| DbName | Nome do banco de dados do Tactium IP. |
| User | Usuário com privilégios para acessar o banco do Tactium IP. |
| Passcode | Senha do usuário com privilégios para acessar o banco do Tactium IP. |
| Table | Tabela onde os usuários da API estão armazenados (na base do Tactium IP). Deve permanecer como “T_USER“. |
| ColumnUser | Coluna que representa o login dos usuários da API (na base do Tactium IP). Deve permanecer como “Name“. |
| ColumnPass | Coluna que representa a senha dos usuários da API (na base do Tactium IP). Deve permanecer como “Password“. |
Usando a ReportAPI do Tactium MIS
Após a conclusão das configurações acima, iremos realizar o teste de autenticação para uso da API e validar a obtenção dos dados dos métodos disponíveis, utilizando o token de acesso. Utilizaremos a ferramenta Postman.
Os métodos disponíveis para autenticação e obtenção de dados são os seguintes:
| Autenticação |
| POST do HTTP + Link da Página Web + sufixo /Login |
| Detalhe de Ligações |
| POST do HTTP + Link da Página Web + sufixo /CallDetails |
| Detalhe de Atividades |
| POST do HTTP + Link da Página Web + sufixo /AgentDetails |
Para mais informações acesse o Manual de Uso da Report API, este está disponível através do link da página web correspondente a aplicação bastando ser acrescentado no subdomínio o sufixo “/Documentation”.
Por exemplo: https://for.tactium.app/ip/mis/Documentation
Login
Vamos inicialmente verificar se a API consegue se autentificar para comunicar-se com o banco de dados, para isso execute o método POST do HTTP + Link da Página Web + sufixo /Login na chamada.
|
POST |
https://for.tactium.app/ip/mis/Login |
Os dados de entrada de tipo JSON serão inseridos no “Body” da requisição:
{ "login": "admin", "password": "Tactium@mis" }
| Campo | Descrição |
| Login | Usuário que irá se autenticar com a API para gerar o token. |
| Password | Senha correspondente ao usuário. |
Executando o método podemos ter acesso ao token que utilizaremos para obter os dados do relatório desejado, logo a autenticação foi concluída com sucesso.

AgentDetails
Para consultar os dados do relatório Detalhe de Ligações utilizaremos o token gerado anteriormente no método POST do HTTP + Link da Página Web + sufixo /AgentDetails.
|
POST |
https://for.tactium.app/ip/mis/AgentDetails |
Os dados de entrada de tipo JSON serão inseridos no “Body” da requisição:
{ "interval": { "startDate": "2023-09-14T17:54:04.867Z", "endDate": "2023-09-14T17:54:04.867Z" }, "agentName": "atendente01" }
| Campo | Descrição |
| interval | Bloco que contém o intervalo de datas utilizadas na consulta. |
| startDate | Data e hora inicial do intervalo consultado. |
| endDate | Data e hora final do intervalo consultado. |
| agentName | Nome do atendente selecionado para a consulta. |
Insira o token gerado para efetuar a autorização na requisição.

Executando o método podemos ter acesso aos dados das atividades deste agente em específico.
Caso seja necessário obter as atividades de todos os agentes basta remover o parâmetro “agentName” da chamada.

CallDetails
Para consultar os dados do relatório Detalhe de Ligações utilizaremos o token gerado anteriormente no método POST do HTTP + Link da Página Web + sufixo /CallDetails.
|
POST |
https://for.tactium.app/ip/mis/CallDetails |
Os dados de entrada de tipo JSON serão inseridos no “Body” da requisição:
{ "interval": { "startDate": "2018-01-01T00:00:00.351Z", "endDate": "2025-10-23T18:18:22.351Z" }, "serviceName": "DEMONSTRACAO RECEPTIVO/DEMO RECEPTIVO", "agentName": "admin" }
| Campo | Descrição |
| interval | Bloco que define o intervalo de datas utilizado na consulta. |
| startDate | Data e hora inicial do período consultado. |
| endDate | Data e hora final do período consultado. |
| serviceName | Nome do serviço selecionado para consulta (fila ou grupo de atendimento). |
| agentName | Nome do atendente solicitado na consulta. |
IvrProductivityDetails
Busca o resultado dos detalhes da produtividade das uras utilizaremos o token gerado anteriormente no método POST do HTTP + Link da Página Web + sufixo /IvrProductivityDetails.
|
POST |
https://for.tactium.app/ip/mis/IvrProductivityDetails |
Os dados de entrada de tipo JSON serão inseridos no “Body” da requisição:
{ "interval": { "startDate": "2024-01-16T18:12:05.947Z", "endDate": "2024-09-16T18:12:05.947Z" } }
| Campo | Descrição |
| interval | Bloco que define o intervalo de datas utilizado na consulta. |
| startDate | Data e hora inicial do período consultado. |
| endDate | Data e hora final do período consultado. |
Insira o token gerado para efetuar a autorização na requisição.

Executando o método podemos ter acesso aos dados de ligações deste serviço e agente em específico.
Caso seja necessário receber todas as ligações sem filtrar pelo tipo de agente e serviço basta remover o parâmetro “agentName” e “serviceName” da chamada.

WhatsappDetails
Para consultar os dados do relatório Detalhe de Atendimentos de Mensagem utilizaremos o token gerado anteriormente no método POST do HTTP + Link da Página Web + sufixo /WhatsAppDetails.
|
POST |
https://for.tactium.app/ip/mis/WhatsAppDetails |
Os dados de entrada de tipo JSON serão inseridos no “Body” da requisição:
{ "interval": { "startDate": "2024-08-16T18:12:05.947Z", "endDate": "2024-09-16T18:12:05.947Z" }, "serviceName": "SAC – SUPORTE", "status": "Concluído", "type": "REC" }
| Campo | Descrição |
| interval | Bloco que define o intervalo de datas utilizado para a consulta. |
| startDate | Data e hora inicial do período consultado. |
| endDate | Data e hora final do período consultado. |
| serviceName | Nome do serviço ou fila utilizada na consulta. |
| status | Status atual do atendimento ou processo (ex.: Concluído, Pendente, Em andamento). |
| type | Tipo de atendimento (receptivo ou ativo). Ex: “Rec” ou “Atv”. |
Insira o token gerado para efetuar a autorização na requisição.

Executando o método podemos ter acesso aos dados de atendimentos deste serviço, status e tipo em específico.
Caso seja necessário receber todos os atendimentos sem filtrar pelo tipo de serviço, status ou tipo basta remover o parâmetro “serviceName”,”status” e “type” da chamada.

CampaignProductivityDetails
Para consultar os dados do relatório Produtividade Campanhas OMNI utilizaremos o token gerado anteriormente no método POST do HTTP + Link da Página Web + sufixo /CampaignProductivityDetails.
|
POST |
https://for.tactium.app/ip/mis/CampaignProductivityDetails |
Os dados de entrada de tipo JSON serão inseridos no “Body” da requisição:
{ "interval": { "startDate": "2024-01-16T18:12:05.947Z", "endDate": "2024-09-16T18:12:05.947Z" }, "phoneNumber": "999999999", "campaignName": "Nome da Campanha" }
| Campo | Descrição |
| interval | Bloco que representa o intervalo de datas utilizado na consulta. |
| startDate | Data e hora inicial do período consultado. |
| endDate | Data e hora final do período consultado. |
| phoneNumber | Número de telefone utilizado como filtro para a consulta. |
| campaignName | Nome da campanha à qual os registros consultados pertencem. |
Insira o token gerado para efetuar a autorização na requisição.

Executando o método podemos ter acesso aos dados de campanha deste número e campanha em específico.
Caso seja necessário receber todos os atendimentos sem filtrar pelo número de telefone ou nome da campanha basta remover o parâmetro “phoneNumber”,”status” e “campaignName” da chamada.



